WebXRåç §ç©ºéã座æšç³»ããããŠãã©ã³ã¹ãã©ãŒã ã«ã€ããŠã®å æ¬çã¬ã€ããæ²¡å ¥æã®ããé«ç²ŸåºŠãªVR/ARäœéšãåµãåºãããã«ã
WebXRåç §ç©ºéãã©ã³ã¹ãã©ãŒã ã®çè§£ïŒåº§æšç³»ãæ·±ãæãäžãã
WebXRã¯ããã©ãŠã¶å ã§çŽæ¥ãé©ãã¹ãä»®æ³çŸå®ããã³æ¡åŒµçŸå®äœéšãåµé ããããã®æãéããŸããããããWebXRããã¹ã¿ãŒããã«ã¯ãåç §ç©ºéãšåº§æšå€æã®ç¢ºããªçè§£ãå¿ èŠã§ãããã®ã¬ã€ãã§ã¯ããããã®æŠå¿µã®å æ¬çãªæŠèŠãæäŸããæ²¡å ¥æã®ããé«ç²ŸåºŠãªVR/ARã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããåãäžããŸãã
WebXRåç §ç©ºéãšã¯ïŒ
çŸå®äžçã§ã¯ãç§ãã¡ã¯ç©äºãã©ãã«ãããã«ã€ããŠå ±éã®çè§£ãæã£ãŠããŸããããããä»®æ³äžçã§ã¯ãä»®æ³ãªããžã§ã¯ãããŠãŒã¶ãŒãç°å¢ã«é¢é£ä»ãã座æšç³»ãå®çŸ©ããæ¹æ³ãå¿ èŠã§ããããã§åç §ç©ºéãç»å ŽããŸããåç §ç©ºéã¯ãä»®æ³äžçã®åç¹ãšåããå®çŸ©ããä»®æ³ãªããžã§ã¯ããé 眮ãããŠãŒã¶ãŒã®åãã远跡ããããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã
ãã®ããã«èããŠã¿ãŠãã ãããããã¡ãã®è»ã®äœçœ®ã誰ãã«èª¬æãããšããŸãããããªãã®2ãã£ãŒãåã1ãã£ãŒãå·Šã§ãããšèšããããããŸãããããªãã¯æé»ã®ãã¡ã«ãèãæãäžå¿ãšããåç §ç©ºéãå®çŸ©ããããšã«ãªããŸããWebXRåç §ç©ºéã¯ãããªãã®ä»®æ³ã·ãŒã³ã«å¯ŸããŠåæ§ã®ã¢ã³ã«ãŒãã€ã³ããæäŸããŸãã
WebXRã«ãããåç §ç©ºéã®çš®é¡
WebXRã¯ãããããç¬èªã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹ãæã€ããã€ãã®ã¿ã€ãã®åç §ç©ºéãæäŸããŸãã
- Viewer Space (ãã¥ãŒã¢ç©ºé): ãã®ç©ºéã¯ãŠãŒã¶ãŒã®ç®ãäžå¿ã«ããŠããŸãããŠãŒã¶ãŒã®é ã®åãã«ãã£ãŠçµ¶ããå€åãããããæ¯èŒçå®å®ããªã空éã§ãããããã¢ãããã£ã¹ãã¬ã€ïŒHUDïŒã®ãããªãé ã«åºå®ãããã³ã³ãã³ãã«æé©ã§ãã
- Local Space (ããŒã«ã«ç©ºé): ãã®ç©ºéã¯ãå®å®çã§ã¹ã¯ãªãŒã³çžå¯Ÿã®ãã¥ãŒãæäŸããŸããåç¹ã¯ãã£ã¹ãã¬ã€ã«å¯ŸããŠåºå®ãããŠããŸããããŠãŒã¶ãŒã¯ãã®ç©ºéå ãç§»åããããšãã§ããŸããçåžãŸãã¯éæ¢ããäœéšã«äŸ¿å©ã§ãã
- Local Floor Space (ããŒã«ã«åºç©ºé): ããŒã«ã«ç©ºéã«äŒŒãŠããŸãããåç¹ãåºã«ãããŸããããã¯ããŠãŒã¶ãŒãéããããšãªã¢ã§ç«ã£ããæ©ãããããäœéšãäœæããã®ã«çæ³çã§ããåºããã®åæã®é«ãã¯éåžžããŠãŒã¶ãŒã®ããã€ã¹ãã£ãªãã¬ãŒã·ã§ã³ã«ãã£ãŠæ±ºå®ãããWebXRã·ã¹ãã ã¯åºäžã§ãã®åç¹ãç¶æããããæåãå°œãããŸãã
- Bounded Floor Space (æçåºç©ºé): ããã¯ããŒã«ã«åºç©ºéãæ¡åŒµãããŠãŒã¶ãŒãç§»åã§ããæçé åïŒããªãŽã³ïŒãå®çŸ©ããŸããç¹ã«å®éã®ç©çç°å¢ãæ³šææ·±ããããã³ã°ãããŠããªã空éã§ããŠãŒã¶ãŒã远跡ãšãªã¢å€ã«è¿·ãåºãã®ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- Unbounded Space (ç¡ç空é): ãã®ç©ºéã«ã¯å¢çããªãããŠãŒã¶ãŒã¯çŸå®äžçã§èªç±ã«ç§»åã§ããŸããä»®æ³éœåžãæ©ããããªå€§èŠæš¡ãªVRäœéšã«é©ããŠããŸãããã ããããå ç¢ãªè¿œè·¡ã·ã¹ãã ãå¿ èŠã§ããããã¯ããŠãŒã¶ãŒãçŸå®äžçã®èŠçã«ä»®æ³ãªããžã§ã¯ããéããŠè¡šç€ºããªããèªç±ã«ç§»åã§ããARã¢ããªã±ãŒã·ã§ã³ã§ãã䜿çšãããŸãã
座æšç³»ã®çè§£
座æšç³»ã¯ãåç §ç©ºéå ã§äœçœ®ãšåããã©ã®ããã«è¡šçŸãããããå®çŸ©ããŸããWebXRã¯å³æåº§æšç³»ã䜿çšããŸããããã¯ãæ£ã®X軞ãå³ããæ£ã®Y軞ãäžããæ£ã®Z軞ããã¥ãŒã¢ïŒæåïŒãæãããšãæå³ããŸãã
座æšç³»ãçè§£ããããšã¯ãä»®æ³ã·ãŒã³å ã®ãªããžã§ã¯ããæ£ããé 眮ããåããå®ããããã«äžå¯æ¬ ã§ããäŸãã°ããŠãŒã¶ãŒã®1ã¡ãŒãã«åã«ãªããžã§ã¯ããé 眮ãããå Žåããã®Z座æšã-1ã«èšå®ããŸãïŒZ軞ã¯ãã¥ãŒã¢ã®æ¹åãæããŠããããšãæãåºããŠãã ããïŒã
WebXRã¯ã¡ãŒãã«ãæšæºã®æž¬å®åäœãšããŠäœ¿çšããŸããããã¯ãç°ãªãåäœïŒã»ã³ãã¡ãŒãã«ãã€ã³ããªã©ïŒã䜿çšããå¯èœæ§ã®ãã3Dã¢ããªã³ã°ããŒã«ãã©ã€ãã©ãªãæ±ãéã«èŠããŠããã¹ãéèŠãªç¹ã§ãã
座æšå€æïŒãªããžã§ã¯ãã®é 眮ãšåãä»ãã®éµ
座æšå€æãšã¯ããã座æšç³»ã®äœçœ®ãšåããå¥ã®åº§æšç³»ã«å€æããæ°åŠçãªæäœã§ããWebXRã§ã¯ã倿ã¯ä»¥äžã®ããã«äžå¯æ¬ ã§ãã
- ãŠãŒã¶ãŒã«å¯Ÿãããªããžã§ã¯ãã®é 眮: ã¯ãŒã«ã空éïŒã°ããŒãã«åº§æšç³»ïŒãããã¥ãŒã¢ç©ºéïŒãŠãŒã¶ãŒã®é ã®äœçœ®ïŒãžãªããžã§ã¯ãã®äœçœ®ã倿ããŸãã
- ãªããžã§ã¯ãã®æ£ããåãä»ã: ãŠãŒã¶ãŒã®åãã«é¢ãããããªããžã§ã¯ããæ£ããæ¹åãåãããã«ä¿èšŒããŸãã
- ãŠãŒã¶ãŒã®åãã®è¿œè·¡: ã»ã³ãµãŒããŒã¿ã«åºã¥ããŠãŠãŒã¶ãŒã®èŠç¹ã®äœçœ®ãšåããæŽæ°ããŸãã
座æšå€æã衚çŸããæãäžè¬çãªæ¹æ³ã¯ã4x4ã®å€æè¡åã䜿çšããããšã§ãããã®è¡åã¯ãå¹³è¡ç§»åïŒäœçœ®ïŒãå転ïŒåãïŒãããã³ã¹ã±ãŒãªã³ã°ãåäžã®å¹ççãªè¡šçŸã«çµåããŸãã
倿è¡åã®èª¬æ
4x4ã®å€æè¡åã¯æ¬¡ã®ããã«ãªããŸãã
[ R00 R01 R02 Tx ] [ R10 R11 R12 Ty ] [ R20 R21 R22 Tz ] [ 0 0 0 1 ]
ããã§ã
- R00-R22: å転æåïŒ3x3å転è¡åïŒã衚ããŸãã
- Tx, Ty, Tz: å¹³è¡ç§»åæåïŒXãYãZè»žã«æ²¿ã£ãŠç§»åããéïŒã衚ããŸãã
ç¹(x, y, z)ã倿è¡åã§å€æããã«ã¯ããã®ç¹ã4Dãã¯ãã«(x, y, z, 1)ãšããŠæ±ããè¡åãæãåãããŸããçµæãšããŠåŸããããã¯ãã«ã¯ãæ°ãã座æšç³»ã§ã®å€æãããç¹ã衚ããŸãã
ã»ãšãã©ã®WebXRãã¬ãŒã ã¯ãŒã¯ïŒThree.jsãBabylon.jsãªã©ïŒã¯ã倿è¡åãæ±ãããã®çµã¿èŸŒã¿é¢æ°ãæäŸããŠãããè¡åèŠçŽ ãæåã§æäœããããšãªãããããã®èšç®ãããç°¡åã«è¡ãããšãã§ããŸãã
WebXRã§ã®å€æã®é©çš
å®è·µçãªäŸãèããŠã¿ãŸãããããŠãŒã¶ãŒã®ç®ã®1ã¡ãŒãã«åã«ä»®æ³ã®ç«æ¹äœãé 眮ããããšããŸãã
- ãã¥ãŒã¢ã®ããŒãºãååŸãã:
XRFrameã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠãéžæããåç §ç©ºéå ã§ã®ãã¥ãŒã¢ã®çŸåšã®ããŒãºãååŸããŸãã - 倿è¡åãäœæãã: ãã¥ãŒã¢ã«å¯Ÿããç«æ¹äœã®æãŸããäœçœ®ãšåãã衚ã倿è¡åãäœæããŸãããã®å Žåãããããç«æ¹äœãè² ã®Zè»žã«æ²¿ã£ãŠïŒãã¥ãŒã¢ã«åãã£ãŠïŒ1ã¡ãŒãã«ç§»åãããå¹³è¡ç§»åè¡åãäœæããŸãã
- 倿ãé©çšãã: ç«æ¹äœã®å ã®å€æè¡åïŒã¯ãŒã«ã空éã§ã®äœçœ®ã衚ãïŒã«ãæ°ãã倿è¡åïŒãã¥ãŒã¢ã«å¯Ÿããäœçœ®ã衚ãïŒãæãåãããŸããããã«ãããã·ãŒã³å ã®ç«æ¹äœã®äœçœ®ãæŽæ°ãããŸãã
以äžã«Three.jsã䜿çšããç°¡åãªäŸã瀺ããŸãã
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );
// Inside the animation loop:
const xrFrame = session.requestAnimationFrame( (time, frame) => {
const pose = frame.getViewerPose(referenceSpace);
if ( pose ) {
const position = new THREE.Vector3(0, 0, -1); // 1 meter in front
position.applyMatrix4( new THREE.Matrix4().fromArray( pose.transform.matrix ) );
cube.position.copy(position);
const orientation = new THREE.Quaternion().fromArray(pose.transform.orientation);
cube.quaternion.copy(orientation);
}
});
ãã®ã³ãŒãã¹ããããã¯ããã¥ãŒã¢ã®ããŒãºãååŸããç«æ¹äœã®æãŸããäœçœ®ïŒ1ã¡ãŒãã«æåïŒã衚ããã¯ãã«ãäœæãããã®äœçœ®ã«ãã¥ãŒã¢ã®å€æè¡åãé©çšãããã®åŸã·ãŒã³å ã®ç«æ¹äœã®äœçœ®ãæŽæ°ããŸãããŸãããã¥ãŒã¢ã®åããç«æ¹äœã«ã³ããŒããŸãã
å®è·µäŸïŒã·ããªãªãšè§£æ±ºç
ããã€ãã®äžè¬çãªã·ããªãªãšããããã解決ããããã«åç §ç©ºé倿ãã©ã®ããã«äœ¿çšã§ããããæ¢ã£ãŠã¿ãŸãããã
1. ãŠãŒã¶ãŒã®æéŠã«åºå®ãããä»®æ³ã³ã³ãããŒã«ããã«ã®äœæ
åžžã«è¡šç€ºããããŠãŒã¶ãŒã®æéŠã«åºå®ãããä»®æ³ã³ã³ãããŒã«ããã«ãäœæããããšæ³åããŠã¿ãŠãã ããããã¥ãŒã¢çžå¯Ÿã®åç §ç©ºéã䜿çšããïŒãŸãã¯ã³ã³ãããŒã©ãŒã«å¯ŸããŠãã©ã³ã¹ãã©ãŒã ãèšç®ããïŒããšãã§ããŸãã以äžã«ãã®ã¢ãããŒãæ¹æ³ã瀺ããŸãã
- ãã¥ãŒã¢ç©ºéãŸãã¯ã³ã³ãããŒã©ç©ºéã䜿çšãã: ãŠãŒã¶ãŒã®é ãŸãã¯æã«å¯ŸããããŒãºãååŸããããã«ã
viewerãŸãã¯`hand`åç §ç©ºéããªã¯ãšã¹ãããŸãã - 倿è¡åãäœæãã: ã³ã³ãããŒã«ããã«ãæéŠã®ãããã«äžãã€åæ¹ã«é 眮ãã倿è¡åãå®çŸ©ããŸãã
- 倿ãé©çšãã: ã³ã³ãããŒã«ããã«ã®å€æè¡åã«ããã¥ãŒã¢ãŸãã¯ã³ã³ãããŒã©ãŒã®å€æè¡åãæãåãããŸããããã«ããããŠãŒã¶ãŒãé ãæãåãããŠããã³ã³ãããŒã«ããã«ã¯ãŠãŒã¶ãŒã®æéŠã«åºå®ããç¶ããŸãã
ãã®ã¢ãããŒãã¯ãVRã²ãŒã ãã¢ããªã±ãŒã·ã§ã³ã§ããŠãŒã¶ãŒã«äŸ¿å©ã§ã¢ã¯ã»ã¹ããããã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããããã«ãã䜿çšãããŸãã
2. ARã§ä»®æ³ãªããžã§ã¯ããçŸå®äžçã®è¡šé¢ã«ã¢ã³ã«ãŒãã
æ¡åŒµçŸå®ã§ã¯ãããŒãã«ãå£ãªã©ã®çŸå®äžçã®è¡šé¢ã«ä»®æ³ãªããžã§ã¯ããã¢ã³ã«ãŒãããããšããããããŸããããã«ã¯ããããã®è¡šé¢ãæ€åºããŠè¿œè·¡ãããããé«åºŠãªã¢ãããŒããå¿ èŠã§ãã
- 平颿€åºã䜿çšãã: WebXR平颿€åºAPIïŒããã€ã¹ã§ãµããŒããããŠããå ŽåïŒã䜿çšããŠããŠãŒã¶ãŒã®ç°å¢å ã®æ°Žå¹³ããã³åçŽãªè¡šé¢ãç¹å®ããŸãã
- ã¢ã³ã«ãŒãäœæãã: æ€åºããã衚é¢ã«
XRAnchorãäœæããŸããããã«ãããçŸå®äžçã«å®å®ããåç §ç¹ãæäŸãããŸãã - ã¢ã³ã«ãŒã«å¯ŸããŠãªããžã§ã¯ããé 眮ãã: ã¢ã³ã«ãŒã®å€æè¡åã«å¯ŸããŠä»®æ³ãªããžã§ã¯ããé 眮ããŸããããã«ããããŠãŒã¶ãŒãåãåã£ãŠãããªããžã§ã¯ãã¯è¡šé¢ã«ä»çãç¶ããŸãã
ARKit (iOS) ãš ARCore (Android) ã¯å ç¢ãªå¹³é¢æ€åºæ©èœãæäŸããŠããããããã¯WebXR Device APIãä»ããŠã¢ã¯ã»ã¹ã§ããŸãã
3. VRã§ã®ãã¬ããŒã
ãã¬ããŒãã¯ããŠãŒã¶ãŒãåºå€§ãªä»®æ³ç°å¢ãçŽ æ©ãç§»åã§ããããã«ããããã«VRã§ãã䜿çšãããææ³ã§ããããã«ã¯ããŠãŒã¶ãŒã®èŠç¹ãããå Žæããå¥ã®å Žæã«ã¹ã ãŒãºã«ç§»è¡ãããããšãå«ãŸããŸãã
- ã¿ãŒã²ããã®å ŽæãååŸãã: ãã¬ããŒãå ã®ã¿ãŒã²ããã®å Žæãæ±ºå®ããŸããããã¯ããŠãŒã¶ãŒã®å ¥åïŒç°å¢å ã®ç¹ãã¯ãªãã¯ãããªã©ïŒãŸãã¯äºåã«å®çŸ©ãããå Žæã«åºã¥ãããšãã§ããŸãã
- 倿ãèšç®ãã: ãŠãŒã¶ãŒãçŸåšã®å Žæããã¿ãŒã²ããã®å Žæã«ç§»åãããããã«å¿ èŠãªäœçœ®ãšåãã®å€åã衚ã倿è¡åãèšç®ããŸãã
- 倿ãé©çšãã: åç §ç©ºéã«å€æãé©çšããŸããããã«ããããŠãŒã¶ãŒã¯å³åº§ã«æ°ããå Žæã«ç§»åããŸãããã¬ããŒããããå¿«é©ã«æããããããã«ãã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ã䜿çšããããšãæ€èšããŠãã ããã
WebXRåç §ç©ºéãæ±ãäžã§ã®ãã¹ããã©ã¯ãã£ã¹
WebXRåç §ç©ºéãæ±ãéã«å¿ã«çããŠããã¹ãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã以äžã«ç€ºããŸãã
- é©åãªåç §ç©ºéãéžæãã: ã¢ããªã±ãŒã·ã§ã³ã«æãé©ããåç §ç©ºéãéžæããŠãã ãããäœæããŠããäœéšã®çš®é¡ïŒçåžãç«äœãã«ãŒã ã¹ã±ãŒã«ãªã©ïŒãšãå¿ èŠãªç²ŸåºŠãšå®å®æ§ã®ã¬ãã«ãèæ ®ããŠãã ããã
- ãã©ããã³ã°ã®åªå€±ã«å¯ŸåŠãã: ãã©ããã³ã°ã倱ãããããä¿¡é Œã§ããªããªã£ããããç¶æ³ã«å¯ŸåŠããæºåãããŠãã ãããããã¯ããŠãŒã¶ãŒã远跡ãšãªã¢å€ã«ç§»åããå Žåããç°å¢ã®ç §æãäžååãªå Žåã«çºçããå¯èœæ§ããããŸãããŠãŒã¶ãŒã«èŠèŠçãªåå³ãæäŸãããã©ãŒã«ããã¯ã¡ã«ããºã ã®å®è£ ãæ€èšããŠãã ããã
- ããã©ãŒãã³ã¹ãæé©åãã: 座æšå€æã¯ãç¹ã«å€æ°ã®ãªããžã§ã¯ããæ±ãå Žåã«èšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸãããã¬ãŒã ããšã«å®è¡ããå¿ èŠãããå€æã®æ°ãæå°éã«æããããã«ã³ãŒããæé©åããŠãã ããããã£ãã·ã³ã°ããã®ä»ã®ãã¯ããã¯ã䜿çšããŠããã©ãŒãã³ã¹ãåäžãããŸãã
- ããŸããŸãªããã€ã¹ã§ãã¹ããã: WebXRã®ããã©ãŒãã³ã¹ãšãã©ããã³ã°å質ã¯ãããã€ã¹ã«ãã£ãŠå€§ããç°ãªãå ŽåããããŸãããã¹ãŠã®ãŠãŒã¶ãŒãå¿«é©ã«åäœããããšã確èªããããã«ãããŸããŸãªããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠãã ããã
- ãŠãŒã¶ãŒã®èº«é·ãšIPDãèæ ®ãã: ãŠãŒã¶ãŒã®ããŸããŸãªèº«é·ãšç³åéè·é¢ïŒIPDïŒãèæ ®ããŠãã ããããŠãŒã¶ãŒã®èº«é·ã«åºã¥ããŠã«ã¡ã©ã®é«ããé©åã«èšå®ãããšãäœéšãããå¿«é©ã«ãªããŸããIPDã調æŽããããšã§ãåãŠãŒã¶ãŒã«å¯ŸããŠç«äœèŠã¬ã³ããªã³ã°ãæ£ç¢ºã«ãªããèŠèŠçãªå¿«é©ããšå¥¥è¡ãç¥èŠã«ãšã£ãŠéèŠã§ããWebXRã¯ããŠãŒã¶ãŒã®æšå®IPDã«ã¢ã¯ã»ã¹ããããã®APIãæäŸããŸãã
é«åºŠãªãããã¯
WebXRåç §ç©ºéãšåº§æšå€æã®åºç€ããã£ãããšçè§£ããããæ¬¡ã®ãããªããé«åºŠãªãããã¯ãæ¢æ±ããããšãã§ããŸãã
- ããŒãºäºæž¬: WebXRã¯ããŠãŒã¶ãŒã®é ãšã³ã³ãããŒã©ãŒã®å°æ¥ã®ããŒãºãäºæž¬ããããã®APIãæäŸããŸããããã䜿çšããŠãé å»¶ãæžãããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãåäžãããããšãã§ããŸãã
- 空éãªãŒãã£ãª: 座æšå€æã¯ããªã¢ã«ãªç©ºéãªãŒãã£ãªäœéšãäœæããããã«äžå¯æ¬ ã§ãã3D空éã«é³æºãé 眮ãããŠãŒã¶ãŒã®é ã«å¯ŸããŠãã®äœçœ®ã倿ããããšã§ãæ²¡å ¥æãšèšå Žæãçã¿åºãããšãã§ããŸãã
- ãã«ããŠãŒã¶ãŒäœéš: ãã«ããŠãŒã¶ãŒVR/ARã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåãä»®æ³äžçå ã®ãã¹ãŠã®ãŠãŒã¶ãŒã®äœçœ®ãšåããåæãããå¿ èŠããããŸããããã«ã¯ãåç §ç©ºéãšåº§æšå€æã®æ éãªç®¡çãå¿ èŠã§ãã
WebXRãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãª
ããã€ãã®JavaScriptãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªã¯ãWebXRéçºãç°¡çŽ åããåç §ç©ºéã座æšå€æãæ±ãããã®é«ã¬ãã«ãªæœè±¡åãæäŸããŸãã人æ°ã®ããéžæè¢ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- Three.js: WebXRã¢ããªã±ãŒã·ã§ã³ãäœæããããã®å æ¬çãªããŒã«ã»ãããæäŸãããåºã䜿çšãããŠãã3Dã°ã©ãã£ãã¯ã¹ã©ã€ãã©ãªã§ãã
- Babylon.js: åªããWebXRãµããŒããšè±å¯ãªæ©èœã»ãããæäŸãããããäžã€ã®äººæ°ã®3Dãšã³ãžã³ã§ãã
- A-Frame: HTMLã©ã€ã¯ãªæ§æã䜿çšããŠWebXRäœéšãç°¡åã«äœæã§ãã宣èšçãªãã¬ãŒã ã¯ãŒã¯ã§ãã
- React Three Fiber: Three.jsçšã®Reactã¬ã³ãã©ãŒã§ãReactã³ã³ããŒãã³ãã䜿çšããŠWebXRã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
çµè«
WebXRåç §ç©ºéãšåº§æšå€æãçè§£ããããšã¯ãæ²¡å ¥æã®ããé«ç²ŸåºŠãªVR/ARäœéšãäœæããããã«äžå¯æ¬ ã§ãããããã®æŠå¿µããã¹ã¿ãŒããããšã§ãWebXR APIã®ããã³ã·ã£ã«ãæå€§éã«åŒãåºããã€ããŒã·ããŠã§ãã®å¢çãæŒãåºããé åçãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããWebXRéçºãããã«æ·±ãæãäžããã«ã€ããŠãããŸããŸãªåç §ç©ºéãšå€ææè¡ã詊ãç¶ããç¹å®ã®ããŒãºã«æé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããŠãã ãããããã©ãŒãã³ã¹ã®ããã«ã³ãŒããæé©åãããã¹ãŠã®ãŠãŒã¶ãŒã«ã¹ã ãŒãºã§é åçãªäœéšãä¿èšŒããããã«ãããŸããŸãªããã€ã¹ã§ãã¹ãããããšãå¿ããªãã§ãã ããã